﻿// articy Software GmbH & Co. KG
/** This code file was generated by ArticyImporter. Changes to this file will get lost once the code is regenerated. */

#pragma once

#include "CoreUObject.h"
#include "ArticyRuntime/Public/ArticyExpressoScripts.h"
#include "BeastremedyGlobalVariables.h"
#include "BeastremedyExpressoScripts.generated.h"

UINTERFACE(Blueprintable)
class UBeastremedyMethodsProvider : public UInterface { GENERATED_BODY() };
class IBeastremedyMethodsProvider
{
	GENERATED_BODY()
	
public:
};

UCLASS(BlueprintType, Blueprintable)
class MERGESIDESCROLLER_API UBeastremedyExpressoScripts : public UArticyExpressoScripts
{
	GENERATED_BODY()
	
private:
	
	
private:
	
	mutable TWeakObjectPtr<UBeastremedyGlobalVariables> ActiveGlobals = nullptr;
	
	void SetGV(UArticyGlobalVariables* GV) const override
	{
		auto gv = Cast<UBeastremedyGlobalVariables>(GV);
		/** Initialize all GV namespace references (or nullify if we're setting to nullptr) */
		/** Store GVs */
		ActiveGlobals = gv;
	}
	
	UArticyGlobalVariables* GetGV() override
	{
		/** Return active global variables as set by SetGV */
		if(ActiveGlobals.IsValid()) { return ActiveGlobals.Get(); }
		return nullptr;
	}
	
	UClass* GetUserMethodsProviderInterface() override
	{
		return UBeastremedyMethodsProvider::StaticClass();
	}
	
public:
	
	#if !((defined(PLATFORM_PS4) && PLATFORM_PS4) || (defined(PLATFORM_PS5) && PLATFORM_PS5))
	#pragma warning(push)
	#pragma warning(disable: 4883) //<disable "optimization cannot be applied due to function size" compile error.
	#endif
	 UBeastremedyExpressoScripts() 
	{
	}
	#if !((defined(PLATFORM_PS4) && PLATFORM_PS4) || (defined(PLATFORM_PS5) && PLATFORM_PS5))
	#pragma warning(pop)
	#endif
};
